package com.jvm.daemon;

public class Demo2 {

    public static class T1 extends Thread {
        public T1(String name) {
            super(name);
        }

        @Override
        public void run() {
            System.out.println(this.getName() + "开始执行，" +
                    (this.isDaemon() ? "我是守护线程" : "我是用户线程"));
            while (true);
        }
    }

    public static void main(String[] args) {
        /**
         * 当程序中所有的用户线程执行完毕之后，不管守护线程是否结束，系统都会自动退出。
         * (需要多次执行，看到有时只有主线程结束，有时主线程跟子线程都结束)
         */
        T1 t1 = new T1("子线程1");
        // 线程的 daemon 默认值和其父线程一样
        t1.setDaemon(true);// 设置为守护线程，需要在 start() 方法前执行，否则会报异常
        t1.start();
        System.out.println("主线程结束");
    }

}
